%%%-------------------------------------------------------------------
%%% @author liuwentao
%%% @doc
%%%     角色增损益头文件
%%% @end
%%% Created : 19. 7月 2021 21:23
%%%-------------------------------------------------------------------
-author("liuwentao").

%% 来源
-define(source_normal, 0).                %% 常规
-define(source_item, 1).                  %% 来自道具
-define(source_shop, 2).                  %% 来自商场


%% 拼接字符串
-define(gain_tag, ?T("获得")).
-define(loss_tag, ?T("消耗")).

%% 增加/获得
-record(gain, {
    %% 标签
    label           :: atom()
    %% 值，格式由具体的处理函数定义
    ,val            :: term()
    %% 操作失败时的提示信息
    ,msg = ""       :: list()
    %% 获得来源
    ,source = ?source_normal   :: non_neg_integer()
    %% 提示语
    ,notice_msg = "" :: list()
    %% 操作失败原因
    ,reason         :: atom()
    %% 附加信息(如掉落中标志是哪个NPC掉的，日志系统使用)
    ,ext = 0        :: term()
    %% 是否公告(方便掉落公告)
    ,notice = 0     :: 0..1
    %% 附加值
    ,ext_val = 0
}).

%% 减少/扣除
-record(loss, {
    %% 标签
    label           :: atom()
    %% 值，格式由具体的处理函数定义
    ,val            :: term()
    %% 操作失败时的提示信息
    ,msg = ""       :: list()
    %% 操作成功提示语
    ,notice_msg = "":: list()
    %% 扣除原因
    %% 比如:失去银两时可以用来标识银两是因为什么原因失去
    ,source = ?source_normal    :: non_neg_integer()
    %% 操作失败原因
    ,reason         :: atom()
    %% 附加信息
    ,ext = []        :: term()
    %% 附加值
    ,ext_val = 0
}).

%% 损益格式控制结构
-record(gain_text_opts, {
    %% gain、loss提示的优先顺序
    order = loss                          :: gain | loss,
    %% 获得提示标签
    gain_tag = ""                         :: string(),
    %% 扣除提示标签
    loss_tag = ""                         :: string(),
    %% 损益数据格式分隔符
    split_str = "，"                      :: string(),
    %% 获得、扣除操作分隔符
    split_op_str = "，"                   :: string(),
    %% 合并需要同一提示的损益类型
    merge_type = []                       :: list(),
    %% 飘入背包效果(默认为不显示飘入背包效果)
    fly_to_bag = 0                        :: non_neg_integer()
}
).

%% 损益gl操作参数（更新列表, 更新参数, 额外参数）
-record(role_gain_gl_args, {
    %% 需要刷新的物品列表
    refresh_items = []
    %% 资产推送参数
    , push_assets = []
    %% 额外参数
    , ext_args = []
}).